package com.example.springbootusecase.hardware;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

import java.io.File;
import java.util.List;

public class PlayLocalAudio extends Application {
    private String audioFilePath;

    // 构造方法
    public PlayLocalAudio() {
        // 无参构造方法是必需的
    }

    // JavaFX启动时会调用的初始化方法
    @Override
    public void init() throws Exception {
        // 从启动参数中获取音频路径
        Parameters params = getParameters();
        List<String> args = params.getRaw();
        if (!args.isEmpty()) {
            this.audioFilePath = args.get(0);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        try {
            // 检查音频路径是否存在
            if (audioFilePath == null || audioFilePath.isEmpty()) {
                System.out.println("未提供音频文件路径");
                Platform.exit();
                return;
            }

            // 使用传入的音频文件路径
            Media media = new Media(new File(audioFilePath).toURI().toString());
            MediaPlayer mediaPlayer = new MediaPlayer(media);

            // 播放音频
            mediaPlayer.play();

            // 播放完成后退出
            mediaPlayer.setOnEndOfMedia(() -> {
                System.out.println("播放完成");
                Platform.exit();
            });

        } catch (Exception e) {
            e.printStackTrace();
            Platform.exit();
        }
    }

    // 自定义的静态方法，用于简化调用
    public static void playAudio(String audioPath) {
        // 直接启动JavaFX应用，并传入音频路径
        Application.launch(PlayLocalAudio.class, audioPath);
    }

    public static void main(String[] args) {
        // 如果直接运行，可以传入音频文件路径
        if (args.length > 0) {
            launch(args);
        } else {
            System.out.println("请提供音频文件路径");
        }
    }
}
